﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CoolCode.Ioc
{
    public  interface ILink
    {
        IHold<I> Link<I, T>() where T : I;
        IHold Link(Type IType, Type TType);
        IHold<I> Link<I>(Func<I> provide);
        IHold<I> Link<I>(I value);
    }

    public interface IBind
    {
        IBind<T> Bind<T>();
    }

    public interface IBind<T>
    {
        IHold<T> To<TImp>() where TImp :T;
        IHold<T> To(Type type);
    }

    public interface IHold 
    {
        void Singleton();
        void Request();
    }

    public interface IHold<T>:IHold
    {
    }
}
